package org.platform.tool.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 该类主要完成 数据库对象 与参数 实体类属性赋值
 *
 * @author FengJie
 * @date 2018/4/19
 */
public class BeansUtils {
    private static Logger logger = LoggerFactory.getLogger(BeansUtils.class);

    /**
     * 将源集合转目标集合
     *
     * @param sourceList 源集合
     * @param target     目标集合
     * @param <S>        源类型
     * @param <T>        目标类型
     * @return 目标集合
     */
    public static <S, T> List<T> copyListProperties(List<S> sourceList, Class<T> target) {
        List<T> targetList = new ArrayList<>(sourceList.size());
        sourceList.forEach(source -> {
            try {
                T t = target.newInstance();
                BeanUtils.copyProperties(source, t);
                targetList.add(t);
            } catch (InstantiationException | IllegalAccessException e) {
                logger.error("实体类:{} 转实体类:{} 错误,异常信息:", sourceList.getClass().getName(), target.getName(), e);
            }
        });
        return targetList;
    }


}

